/** 
* Copyright (C) 2012-2017 ZEEI Inc.All Rights Reserved.
* 项目名称：common
* 文件名称：PageUtil.java
* 包  名 称：com.zeei.common.utils
* 文件描述：分页工具类
* 创建日期：2017年8月3日上午9:39:11
* 
* 修改历史
* 1.0 luoxianglin 2017年8月3日上午9:39:11 创建文件
*
*/
package com.zeei.ems.base.util;


import java.util.Date;
import java.util.List;

import com.zeei.ems.base.page.PageBean;
import com.zeei.ems.base.page.PageParamVO;
import com.zeei.ems.base.page.SortParamVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

/**
 * @类型名称：PageUtil
 * @类型描述：分页工具类
 * @功能描述：提供分页操作相关方法
 * @创建作者：luoxianglin
 */
public class PageUtil {
	public static final int DEFAULT_PAGENUM = 1;
	public static final int DEFAULT_PAGESIZE = 10;
	private static final Logger logger = LoggerFactory.getLogger(PageUtil.class);

	/**
	 * 方法描述：设置分页，其后的第一个查询会生效
	 * 
	 * @param pageParam
	 *            分页参数
	 */
	public static void setPage(PageParamVO pageParam) {
		setPage(pageParam.getPage(), pageParam.getRows());
	}

	/**
	 * 方法描述：设置分页，其后的第一个查询会生效
	 * 
	 * @param pageNum
	 *            页码
	 * @param pageSize
	 *            每页数据条数
	 */
	public static void setPage(int pageNum, int pageSize) {
		PageHelper.startPage(pageNum, pageSize);
	}

	public static void setPage(PageParamVO pageParam, SortParamVO sortParam) {
		if (sortParam != null) {
			setPage(pageParam.getPage(), pageParam.getRows(), sortParam.getOrderBySQL());
		} else {
			setPage(pageParam.getPage(), pageParam.getRows());
		}
	}

	/**
	 * 方法描述:设置分页。有排序功能
	 *
	 * @param pageNum
	 * @param pageSize
	 * @param orderBy
	 */
	public static void setPage(int pageNum, int pageSize, String orderBy) {
		PageHelper.startPage(pageNum, pageSize, orderBy);
	}

	/**
	 * 方法描述：将List转化成PageBean
	 *
	 * @return
	 */

	public static <T> PageBean<T> convertPageBean(List<T> list) {
		PageInfo<T> pageInfo = new PageInfo<T>(list);
		return convertPageBean(pageInfo);
	}

	/**
	 * 方法描述：将PageInfo转化成PageBean
	 * 
	 * @param pageInfo
	 * @return
	 */
	public static <T> PageBean<T> convertPageBean(PageInfo<T> pageInfo) {
		PageBean<T> pageBean = new PageBean<T>();
		pageBean.setTotal(pageInfo.getTotal());
		pageBean.setRows(pageInfo.getList());
		return pageBean;
	}


	public static long getCycle(Date date, int interval) {
		// 默认值
		if (interval == 0) {
			interval = 5;
		}
		Long time = date.getTime();
		long cycle = time / interval;
		return cycle;
	}

	}